// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "net/cert/cert_verify_result.h"

#include <tuple>

#include "net/cert/x509_certificate.h"

namespace net {

CertVerifyResult::CertVerifyResult()
{
    Reset();
}

CertVerifyResult::CertVerifyResult(const CertVerifyResult& other) = default;

CertVerifyResult::~CertVerifyResult()
{
}

void CertVerifyResult::Reset()
{
    verified_cert = NULL;
    cert_status = 0;
    has_md2 = false;
    has_md4 = false;
    has_md5 = false;
    has_sha1 = false;
    has_sha1_leaf = false;
    is_issued_by_known_root = false;
    is_issued_by_additional_trust_anchor = false;
    common_name_fallback_used = false;

    public_key_hashes.clear();
}

bool CertVerifyResult::operator==(const CertVerifyResult& other) const
{
    return verified_cert->Equals(other.verified_cert.get()) && std::tie(cert_status, has_md2, has_md4, has_md5, has_sha1, has_sha1_leaf, public_key_hashes, is_issued_by_known_root, is_issued_by_additional_trust_anchor, common_name_fallback_used) == std::tie(other.cert_status, other.has_md2, other.has_md4, other.has_md5, other.has_sha1, other.has_sha1_leaf, other.public_key_hashes, other.is_issued_by_known_root, other.is_issued_by_additional_trust_anchor, other.common_name_fallback_used);
}

} // namespace net
